package hichecker.controller;

import java.awt.Color;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.KeyStroke;

public class Config {

	// Strings for programm intern stuff, like extensions, names, version, etc.
	public final static String PROGRAM_NAME = "HiChecker";
	public final static String PROGRAM_VERSION = "0.1.1";
	public final static String FILE_EXT = "hcx";
	public final static String FILE_EXT_PART = "hcx.part";

	// filechooser
	public final static String OPEN_FC_TITLE = "Öffnen";
	public final static String SAVE_FC_TITLE = "Speichern";
	public final static String IMPORT_FC_TITLE = "Importieren";
	public final static String EXPORT_FC_TITLE = "Exportieren";

	// Values for scoring
	public final static float MINIMUM_SCORE = 0.5f;

	// Strings for the menu
	public final static String MENU_NEW = "Legt eine neue Veranstaltung an";
	public final static String MENU_OPEN = "Öffnet eine bestehende Veranstaltung";
	public final static String MENU_SAVE = "Speichert die aktuelle Veranstaltung";
	public final static String MENU_SAVE_AS = "Speichert die aktuelle Veranstaltung unter neuem Namen";
	public final static String MENU_IMPORT = "Importiert eine PVL/PTL/Prüfung aus einer Datei";
	public final static String MENU_EXPORT = "Exportiert die aktuelle PVL/PTL/Prüfung in eine Datei";
	public final static String MENU_CSV = "Exportiert die aktuelle PVL/PTL als *.csv Datei";
	public final static String MENU_SWITCH = "Wechselt zwischen Daten- und Einstellungsansicht";
	public final static String MENU_ADD = "hinzufügen";
	public final static String MENU_REMOVE = "entfernen";
	public final static String MENU_SAVE_POPUP_SAVE = "Speichern";
	public final static String MENU_SAVE_POPUP_SAVE_AT = "Speichern unter...";
	public final static String MENU_CONFIRM_DELETE_DIALOG = "Möchte sie das aktuell Element wirklich löschen?";
	public final static String MENU_CONFIRM_DELETE_HEADER = "Löschen bestätigen";

	// String for the content panel
	public final static String CONTENT_CONFIRM_DELETE = "Möchten sie die gewählte(n) Zeile(n) wirklich löschen?";
	public final static String CONTENT_CONFIRM_DELETE_HEADER = "Löschen bestätigen";

	// Strings for the container panel
	public final static String CONTAINER_CLOSE = "Schließt die aktuelle veranstaltung";

	public final static String DIALOG_CONFIRM_OVERWRITE = "Datei existiert bereits. Überschreiben?";
	public final static String DIALOG_CONFIRM_OVERWRITE_HEADER = "Überschreiben bestätigen";

	// Strings for the default values after creating new instances
	public final static String NEW_VALUE_COURSE_NAME = "Veranstaltung";
	public final static String NEW_VALUE_PVL_NAME = "PVL";
	public final static String NEW_VALUE_PTL_NAME = "PTL";
	public final static String NEW_VALUE_SERIES_NAME = "Serie";

	// Strings for names of parts of university classes
	public final static String COURSE_NAME = "Veranstaltung";
	public final static String COURSE_NUMBER = "Veranstaltungsnummer";
	public final static String COURSE_LECTURER = "Dozent";
	public final static String COURSE_GROUPLEADER = "Gruppenleiter";
	public final static String COURSE_GRADE = "Modulnote";
	public final static String COURSE_TERM = "Semester";
	public final static String REQUIREMENT_NAME = "Bezeichnung";
	public final static String REQUIREMENT_PTL_PERCENTAGE = "Anteil an Gesamtnote";
	public final static String REQUIREMENT_GRADE = "Note";
	public final static String SERIES_NAME = "Bezeichnung";
	public final static String SERIES_GRADE = "Note";
	public final static String TASK_NAME = "Bezeichnung";
	public final static String TASK_MAX = "Maximale Punkte";
	public final static String TASK_OPTIONAL = "Zusatzaufgabe";
	public final static String STUDENT_FIRST_NAME = "Vorname";
	public final static String STUDENT_LAST_NAME = "Nachname";
	public final static String STUDENT_MATRIKEL = "Matrikel";
	public final static String STUDENT_STUDY_COURSE = "Studium";

	// String for the conditions
	public final static String CONDITION_SUBS_PASSED = "Anzahl bestandener Untereinheiten >=";
	public final static String CONDITION_SUM_POINTS_GREATER_EQUAL = "Summe erreichten Punkte >= (in %)";
	public final static String CONDITION_GRADE_GREATER_EQUAL = "Note >=";

	// Strings for the buttons
	public final static String BUTTON_CONFIRM = "Übernehmen";
	public final static String BUTTON_GROUP = "Gruppieren";
	public final static String BUTTON_GROUP_CLEAR = "Gruppierung aufheben";
	public final static String BUTTON_ADD_CONDITION = "Bedingung hinzufügen";
	public final static String BUTTON_REMOVE = "Löschen";

	// Tooltip texts
	public final static String TOOLTIP_ADD_AND = "Fügt einen neuen UND Block hinzu";
	public final static String TOOLTIP_ADD_OR = "Fügt einen neuen OR Block hinzu";
	public final static String TOOLTIP_ADD_STATEMENT = "Fügt eine neue Einzelbedingung hinzu";
	public final static String TOOLTIP_REMOVE_CONDITION = "Löscht die gewählte Bedingung";

	// String for border captions
	public final static String CAPTION_AND = "Und";
	public final static String CAPTION_OR = "Oder";

	// The different colors used
	public final static Color COLOR_NEW_DATA = new Color(159, 203, 75);
	public final static Color COLOR_CONFLICT_DATA = new Color(191, 31, 25);
	public final static Color COLOR_GROUP_SELECTED = new Color(124, 170, 207);
	public final static Color COLOR_GROUP_UNSELECTED = new Color(253, 237, 162);
	public final static Color COLOR_CHANGED_SELECTED = new Color(124, 170, 207);
	public final static Color COLOR_CHANGED_UNSELECTED = new Color(253, 237, 162);
	public final static Color COLOR_SELECTION_BORDER = new Color(253, 237, 162);

	// Popups for InputVerifier
	public final static String POPUP_NUMBER_MIN = "Die eingebene Zahl muss größer oder gleich #1 sein";
	public final static String POPUP_NUMBER_MAX = "Die eingebene Zahl muss kleiner oder gleich #1 sein";
	public final static String POPUP_NUMBER_NO_NUMBER = "Der eingegebene Text ist keine Zahl";
	public final static String POPUP_SEMESTER_INVALID = "Der eingegebene Text hat ein ungültiges Format. Es muss \"SS YY\" bzw. \"WS YY/YY+1\" entsprechen";

	// Hotkeys
	public final static KeyStroke HOTKEY_PRINT = KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_GROUP = KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_GROUP_CLEAR = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_SAVE = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_SAVE_AS = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_DOWN_MASK);
	public final static KeyStroke HOTKEY_OPEN = KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_IMPORT = KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_EXPORT = KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_NEW = KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_SWITCH = KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_DOWN_MASK);
	public final static KeyStroke HOTKEY_DELETE = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);

}
